#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QFrame>
#include <QGridLayout>

#include "module/module_window.h"
#include "project_startup/prostartup_newpro.h"
#include "projectFileConfig/projectfileconfig.h"
#include "module/modulefileconfig.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void insert_text2textEdit(QString text);

    void add_property_interface(QFrame *f);

    projectFileConfig proFileConfig;

private slots:
    void on_pushButton_new_module_clicked();

    void on_actionModule_triggered();

    void on_tabWidget_tabCloseRequested(int index);

    void on_pushButton_new_child_module_clicked();

    void on_treeWidget_project_itemDoubleClicked(QTreeWidgetItem *item, int column);

public slots:
    void change_tabWidget_tabName(QString name);

    void recv_proPathData(Project_Path);

    void changeContent();

    void recv_newModule(Module_Data *data, Module_Data::ModuleType type); // 接收新建 Module 数据 槽函数

//    void add_moduleItem(Module_Data *data, QDomElement e);  // 增加项目栏 Module 槽函数
    void add_moduleItem(Module_Data *data, QString id);

private:
    Ui::MainWindow *ui;

    QTreeWidgetItem *root_item;
    QTreeWidgetItem *module_item;

    void new_module(Module_Data::ModuleType type);

    void add_module(Module_Data *data, bool send_moduleData = false);
    void add_childModule(Module_Data *data, QPointF point, bool send_moduleData = false);

    void load_proConfig();  // 加载工程文件配置，初始化module界面

    bool ChangeContent = false;

signals:
    void send_newModuleData(Module_Data *);
};
#endif // MAINWINDOW_H
